home *** CD-ROM | disk | FTP | other *** search
/ Aminet 45 / Aminet 45 (2001)(GTI - Schatztruhe)[!][Oct 2001].iso / Aminet / dev / e / 2b_CrtvE_src.lha / main.s < prev    next >
Text File  |  2001-07-09  |  13KB  |  603 lines

  1. ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ;
  2. ;                                                                       ;
  3. ;   Amiga E Compiler/Assembler/Linker by $#%! in 1991/92/93/94/95       ;
  4. ;   CreativE 2.12 by Tomasz Wiszkowski (error/bb)                       ;
  5. ;                                                                       ;
  6. ; ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ;
  7.  
  8.  
  9.  
  10.  
  11. CREATIVE_VERSION: MACRO
  12.     DC.B    "CreativE "
  13.     DC.B    "2.12.3 (09.07.01)"
  14.     DC.B    " by Tomasz Wiszkowski (Error/bla²)",10
  15.     ENDM
  16.  
  17. VERSION_020 EQU 0       ; just a couple of changes; no speedup...
  18.  
  19. DEBUG_TYPE: macro
  20.     IFNE DEBUG_MSGS
  21.         MOVEM.L D0-A6,-(A7)
  22.         MOVE.L #.dbg,D2
  23.         MOVE.L #.edbg-.dbg,D3
  24.         JSR WRITECON
  25.         move.l #EXAMPLE,d2
  26.         move.l #2,d3
  27.         JSR WRITECON
  28.         MOVEM.L (A7)+,D0-A6
  29.         BRA .edbg
  30. .dbg: DC.B \1
  31.         even
  32. .edbg:
  33.     endc
  34.     endm
  35.  
  36.     IFEQ VERSION_020
  37. GOSR: MACRO
  38.     JSR \1
  39.     ENDM
  40.     ELSE
  41. GOSR: MACRO
  42.     BSR.L \1
  43.     ENDM
  44.     ENDC
  45.  
  46.  
  47. S:  MOVE.L  A7,INITSTACK
  48.     GOSR INITALL
  49. ;; check stack
  50.     MOVE.L  D0,D7
  51.     MOVE.L  A0,A5
  52.     MOVE.L  $4.W,A6
  53.     MOVE.L  276(a6),a1
  54.     MOVE.L  62(A1),D1
  55.     SUB.L   58(A1),D1
  56.     CMP.L   #20000,D1
  57. ;    BPL     .NUFF
  58. ;    MOVE.L  #80000,D0
  59. ;    BSR     NEW
  60. ;    BEQ     iERROR38
  61. ;    ADD.L   #80000,D0
  62. ;    MOVE.L  D0,A7
  63.     blt     iERROR108
  64.     MOVE.L  A5,A0
  65.     MOVE.L  D7,D0
  66.  
  67. .NUFF:
  68. ;*-*
  69.     GOSR INITBUFFERS
  70.     GOSR CLEARHASHTAB
  71.     GOSR SETVARS
  72.     GOSR MAKEKEYHASH
  73.     GOSR MAKEASMHASH
  74.     GOSR SETUPLIBS
  75.     GOSR INITFUNCS
  76.     GOSR ADDGLOBVARS
  77.     GOSR GETCACHE
  78.     GOSR CHECKCOOKIES
  79.     GOSR TOKENIZE
  80.     GOSR CHECKCOOKIES
  81.     GOSR SECONDARYLOAD
  82.     GOSR CHECKIDENTS
  83.     GOSR SWAPVALUES
  84.     GOSR MAKEINITCODE
  85.     GOSR CHECKCOOKIES
  86.     GOSR DOARGMACROS
  87.     GOSR PASS1
  88.     GOSR CHECKCOOKIES
  89.     GOSR LINKDELEGATECONSTRUCTORS
  90.     GOSR MAKEEXITCODE
  91.     GOSR MATHEXITETC
  92.     GOSR LINKFUNCS
  93.     GOSR LINKLIB
  94.     GOSR APPEND_LISTS
  95.  
  96.     GOSR CALCADR
  97.  
  98.     GOSR WRITEEXE
  99.     GOSR WRITELIBMOD
  100.     GOSR CHECKCOOKIES
  101.     GOSR NOERROR
  102.     GOSR WRITEBUFFERS
  103.     GOSR CLEANUPALL
  104.     GOSR FIXRETVALUE
  105.     MOVE.L  INITSTACK,A7
  106.     RTS
  107.  
  108.  
  109. K:  BSET    #6,CODEPREFS+3      ; -w
  110.     BRA S
  111.  
  112. SC: MOVE.L  #CLINE,A0
  113.     MOVEQ   #CLEND-CLINE,D0
  114.     BRA S
  115. CLINE:  DC.B    " ",10
  116. CLEND:
  117.     EVEN
  118.  
  119. EXAMPLE:
  120.     DC.B    " ",10
  121.  
  122. EXAMPLEEND:
  123.     DC.B    10,10
  124.  
  125. EVEN
  126.  
  127. ;; Ident types
  128. ; No more demoversions!
  129. UNDEF   = 0             ; ident types
  130. LOCV    = 1
  131. GLOBV   = 2
  132. LAB = 3
  133. ;*-*
  134. ;; interim codes
  135. EOI = 0             ; interimcodes
  136. VALUE   = 1
  137. LIBC    = 2
  138. COM = 3
  139. ASSGN   = 4
  140. IDENT   = 5
  141. STR = 6
  142. ;*-*
  143. ;; Object structure
  144. ONEXT   = -4                ; M O  OBJECT STRUCTURE OFFSETS
  145. OOFF    = 0                 ; M    M=MEMBER
  146. ODEL    = 0                 ;   O  O=OBJECT
  147. OFLAGS  = 2                 ; M O
  148. OSIZE   = 4                 ; M O
  149. OID = 6                     ; M O
  150. OASCII  = 8                 ; M O
  151. OPTRTYPE= 12                ; M
  152. OSIZEOF = 16                ; M
  153. OMEMB   = 12                ;   O
  154. OMETHOD = 16                ;   O
  155. OSUPER  = 20                ;   O
  156. ODCODE  = 24                ;   O
  157. OACC    = 28                ;   O
  158. ODELOFF = 32                ;   O
  159. ODESTR  = 34                ;   O
  160. ;*-*
  161. ;; Hunklist structure
  162. H_NEXT  =   -4      ; ptr to hunk
  163. H_ADDR  =   0       ; where it begins..
  164. H_TYPE  =   4       ; it's type
  165. H_END   =   8       ; where it ends..
  166. H_PREV  =   12      ; previous
  167. H_RELO  =   16      ; relocs (longs!)
  168.  
  169. R_NEXT  =   -4      ; reloc next
  170. R_HUNK  =   0       ; destination hunk number
  171. R_OFF   =   2       ; source hunk offset
  172. ;*-*
  173. ;; Lib structure
  174. LIB_NEXT    =   -4      ; next
  175. LIB_NAME    =   0       ; name
  176. LIB_ARGS    =   4       ; args count
  177. LIB_CLEN    =   6       ; code len
  178. LIB_CODE    =   10      ; code itself
  179. LIB_USED    =   14      ; set if used/position in code
  180. LIB_TYPE    =   18      ; type (0=proc, 1=inline, 2=startup etc)
  181. LIB_TARR    =   20      ; table args array - regs (inline only)
  182. LIB_RELO    =   28      ; reloc
  183. LIB_XTNS    =   32      ; extension - for XREFs and XDEFs.
  184. LIB_CPU     =   36      ; required CPU
  185. LIB_FPU     =   38      ; required FPU
  186. LIB_MMU     =   40      ; required MMU
  187. LIB_OSVERS  =   42      ; required os version
  188. LIB_SIZE    =   44      ; SIZEOF lib
  189. ;*-*
  190. ;; Method structure
  191. M_NEXT  = 0             ; METHOD
  192. M_PROC  = 4
  193. M_TYPE  = 8
  194. M_FLAGS = 9
  195. M_OFF   = 10
  196. M_NAME  = 12
  197. ;*-*
  198. ;; method flags
  199. MT_METHOD   = 0         ; METHODFLAGS
  200. MT_FROZEN   = 1
  201. MT_SHARED   = 2
  202. MT_EMPTY    = 3
  203. ;*-*
  204. ;; module info
  205. MI_NEXT     = 0         ; MODULEINFO
  206. MI_FLAGS    = 4
  207. MI_NAMELEN  = 6
  208. MI_MOD      = 10
  209. MI_LIST     = 14
  210. MI_NAMEPTR  = 18
  211. ;MI_NAME    = 22            ; ARRAY FROM HERE...
  212. ;*-*
  213. ;; proc or class
  214. PC_NEXT     = 0         ; PROC_OR_CLASS
  215. PC_TYPE     = 4
  216. PC_INFO     = 6
  217. PC_ACC      = 10
  218. ;*-*
  219. ;; constants structure
  220. CNEXT   = 0             ; CONST STRUCTURE OFFSETS
  221. CASCII  = 4
  222. CVAL    = 8
  223. CFLAGS  = 12
  224. ;*-*
  225.  
  226. CURVERSION  = 11            ; IMPORTANT, MODULE VERSION!!
  227.  
  228. ;; system consts
  229. SKIPMARK    = $8000
  230.  
  231. MAXREGVARS  = 5         ; NOTE: DEPENDS ALSO ON EFUNCS!
  232. MAXMULTRET  = 3         ; NOTE: DEPENDS ON REGVARS!
  233. MIDHEAVY    = $100
  234. VARHEAVY    = 12            ; OFFSET AT WHICH HEAVYINFOS IN ID
  235.  
  236. MINSTACKSIZE    = 10000         ; van gen. code
  237. MINSTACKSIZELIB = 1500
  238. MAXOBJSIZE  = 5000
  239. ;*-*
  240. ;; A4handle
  241. CHOPMEM     = -100
  242. CHOPLEFT    = -104
  243. FMEMSIZE    = 5000
  244. GLOBOFF     = -512
  245. GLOBOFFNEWTAB   = GLOBOFF+16        ; 16..256+16
  246. NEWTABMAX   = 256
  247. ;*-*
  248. ;; customs
  249. IOFF        = 100
  250. KB      = 1024
  251. MAXIDENT    = 1000          ; size of *one* identifier
  252. MAXSTACK    = 30000         ; each rec.step=6-10b+rec.databuffer
  253. MAXLIBRAISE = 200           ; EACH = 10 BYTES
  254. ;*-*
  255. MINIMUM_ACODE   = 100*KB        ; GENERATED CODE-BUF
  256.  
  257. ;; MACRO SECTION
  258. ;; TSTMOD - check if we're in a module
  259. TSTMOD: MACRO
  260.     BTST    #4,CODEPREFS+2
  261.     ENDM
  262. ;*-*
  263. ;; RANGE CHECK MACROS
  264. ;; CheckB
  265. CHKB:   MACRO               ; \1=REG, \2=TRREG, \3=ERLAB
  266.     MOVE.L  \1,\2
  267.     BTST    #31,\2
  268.     BEQ.S   *+4
  269.     NEG.L   \2          ; BAD: RANGE=(-255,255)=>(-128,255)
  270.     clr.b   \2
  271.     TST.L   \2
  272.     BNE \3
  273.     ENDM
  274. ;*-*
  275. ;; CheckW
  276. CHKW:   MACRO               ; \1=REG, \2=TRREG, \3=ERLAB
  277.     MOVE.L  \1,\2
  278.     BTST    #31,\2
  279.     BEQ.S   *+4
  280.     NEG.L   \2
  281.     SWAP    \2
  282.     TST.W   \2
  283.     BNE \3
  284.     ENDM
  285. ;*-*
  286. ;*-*
  287. ;; HASHING MACROS
  288. ;; HashC
  289. HASHC:  MACRO               ; \1=HASHREG, \2=CHAR
  290.     LSL.W   #4,\1
  291.     ADD.B   \2,\1
  292.     ENDM
  293. ;*-*
  294. ;; HashE
  295. HASHE:  MACRO               ; \1=HASHREG
  296.     DIVU    #211,\1
  297.     SWAP    \1
  298.     EXT.L   \1
  299.     ENDM
  300. ;*-*
  301. ;; Hash
  302. HASH:   MACRO               ; \1=ASCREG, \2=DATREG, \3=TRASHREG
  303.     MOVEQ   #0,\2
  304. .H1:MOVE.B  (\1)+,\3
  305.     BEQ.S   .H2
  306.     HASHC   \2,\3
  307.     BRA.S   .H1
  308. .H2:    HASHE   \2
  309.     ENDM
  310. ;*-*
  311. ;*-*
  312. ;; APART VAR ACCESS: ASM_GETLABEL
  313. ;; GENGI - GENerateGlobalInfo: A4=MID INS.
  314. GENGI:  MACRO               ; \1=IDENTREC, \2=TRASHDX
  315.     MOVE.L  6(\1),\2        ; SEE IF WE HAVE TO ADD A GLOBINFO ENTRY
  316.     BEQ.S   .GVNGI
  317.     MOVEM.L \1/A3,-(A7)
  318.     MOVE.L  \2,\1
  319.     MOVE.L  4(\1),\2
  320.     MOVE.L  \1,A3
  321.     GETM    \1
  322.     MOVE.L  \1,4(A3)
  323.     MOVE.L  \2,(\1)+
  324.     MOVE.L  A4,(\1)+
  325.     MOVE.W  OPERSIZE,(\1)+
  326.     DONEM   \1
  327.     MOVEM.L (A7)+,\1/A3
  328. .GVNGI:
  329.     ENDM
  330. ;*-*
  331. ;; OpLong - Set operator size
  332. OPLONG: MACRO
  333.     MOVE.W  #4,OPERSIZE
  334.     ENDM
  335. ;*-*
  336. ;; OpInt
  337. OPINT:  MACRO
  338.     MOVE.W  #2,OPERSIZE
  339.     ENDM
  340. ;*-*
  341. ;; OpChar
  342. OPCHAR: MACRO
  343.     MOVE.W  #1,OPERSIZE
  344.     ENDM
  345. ;*-*
  346. ;; GenVar
  347. ; OFF_1:IMM, IDENT_2:Ax, OFFSET_3:EA.W, THRASH_4:Dx
  348.              ; NOT A3-A5!!
  349.  
  350. GENVAR: MACRO
  351.     MOVE.B  4(\2),\4
  352.     BNE .1
  353.     JMP ERROR22         ; TEST FOR UNIDENT
  354. .1:
  355.     CMP.B   #GLOBV,\4
  356.     BNE.S   .GV1
  357.     MOVE.W  -2(A4),\4
  358.     BCLR    #\1,\4          ; ADJUSTMODE
  359.     MOVE.W  \4,-2(A4)
  360.  
  361.     GENGI   \2,\4
  362.  
  363. .GV1:   BTST    #3,5(\2)        ; SEE IF REGVAR
  364.     BNE.S   .GV2
  365.     MOVE.W  \3,(A4)+
  366.     BRA.S   .GV3
  367. .GV2:   MOVE.W  10(\2),\4
  368.     IFEQ \1
  369.      ANDI.W #%1111111111000000,-2(A4)
  370.     ELSE
  371.      AND.W  #%1111000000111111,-2(A4)
  372.      LSL.W  #8,\4
  373.      LSL.W  #1,\4
  374.     ENDC
  375.     OR.W    \4,-2(A4)
  376. .GV3:                   ; END
  377.     ENDM
  378. ;*-*
  379.  
  380. MOVEMS:     MOVEM.L D0/D1,-(A7)
  381. MOVEMR:     MOVEM.L (A7)+,D0/D1
  382. SMASK:      DC.W    0
  383. ;*-*
  384. ;; BitM
  385. BITM:   MACRO               ; \1=BITNUM, \2=REG
  386.     BTST    #\1,\2
  387.     BEQ.S   .SR\1
  388.     BSET    #15-\1,\2
  389. .SR\1:
  390.     ENDM
  391. ;*-*
  392. ;; LSaver
  393. LSAVER: MACRO               ; \1=SAVEMASK.EA.W, \2=RETURN_SMASK.DX
  394.     MOVE.W  \1,\2
  395.     AND.W   #%11111000,\2       ; diffr. from SAVER
  396.     MOVE.W  \2,SMASK
  397.     BEQ.S   .NOSR
  398.     MOVE.W  MOVEMS,(A4)+
  399.     BITM    7,\2
  400.     BITM    6,\2
  401.     BITM    5,\2
  402.     BITM    4,\2
  403.     BITM    3,\2
  404.     CLR.B   \2
  405.     MOVE.W  \2,(A4)+
  406.     MOVE.W  SMASK,\2
  407. .NOSR:                  ; \2 IS HERE ATLEAST BOOL
  408.     ENDM
  409. ;*-*
  410. ;; Saver
  411. SAVER:  MACRO               ; \1=SAVEMASK.EA.W, \2=RETURN_SMASK.DX
  412.     MOVE.W  \1,\2
  413.     AND.W   PROCMASK,\2
  414.     MOVE.W  \2,SMASK
  415.     BEQ.S   .NOSR
  416.     MOVE.W  MOVEMS,(A4)+
  417.     BITM    7,\2
  418.     BITM    6,\2
  419.     BITM    5,\2
  420.     BITM    4,\2
  421.     BITM    3,\2
  422.     CLR.B   \2
  423.     MOVE.W  \2,(A4)+
  424.     MOVE.W  SMASK,\2
  425. .NOSR:                  ; \2 IS HERE ATLEAST BOOL
  426.     ENDM
  427. ;*-*
  428. ;; Restr
  429. RESTR:  MACRO               ; \1=SMASK.EA
  430.     TST.W   \1
  431.     BEQ.S   .NORR
  432.     MOVE.W  MOVEMR,(A4)+
  433.     MOVE.W  \1,(A4)+
  434. .NORR:
  435.     ENDM
  436. ;*-*
  437. ;; Lower
  438. LOWER:  MACRO               ; \1=AX (STRING,TRASH), \2=(TRASH)
  439. .LOWL:  MOVE.B  (\1),\2
  440.     BEQ.S   .LOWO
  441.     CMP.B   #"A",\2
  442.     BMI.S   .LOWN
  443.     CMP.B   #"Z"+1,\2
  444.     BPL.S   .LOWN
  445.     BSET    #5,\2;ADD.B   #32,\2
  446. .LOWN:  MOVE.B  \2,(\1)+
  447.     BRA.S   .LOWL
  448. .LOWO:                  ; ax points at 0-byte at end string
  449.     ENDM
  450. ;*-*
  451. ;; Lower2
  452. LOWER2:  MACRO               ; \1=AX (STRING,TRASH), \2=(TRASH)
  453. .LOWL2:  MOVE.B  (\1),\2
  454.     BEQ.S   .LOWO2
  455.     CMP.B   #"A",\2
  456.     BMI.S   .LOWN2
  457.     CMP.B   #"Z"+1,\2
  458.     BPL.S   .LOWN2
  459.     BSET    #5,\2;ADD.B   #32,\2
  460. .LOWN2:  MOVE.B  \2,(\1)+
  461.     BRA.S   .LOWL2
  462. .LOWO2:                  ; ax points at 0-byte at end string
  463.     ENDM
  464. ;*-*
  465. ;; FAST MEMORY ALLOCATION MACROS
  466. ;; GetM
  467. GETM:   MACRO               ; \1=Ax (START USING MEM)
  468.     MOVE.L  HEAP,\1
  469.     ENDM
  470. ;*-*
  471. ;; DoneM
  472. DONEM:  MACRO               ; \1=Ax (DONE WITH MEM (LIGHT VERSION))
  473.     MOVE.L  \1,HEAP
  474.     SUBQ.W  #1,CHECKHEAP
  475.     BNE.S   *+16
  476.     JSR     EXPAND5
  477.     MOVE.W  #5,CHECKHEAP        ; MAX 200 BYTES EACH = IDENT OR STRUCT
  478.     ENDM                ; doesn't trash \1 !!!!
  479. ;*-*
  480. ;; DoneH
  481. DONEH:  MACRO               ; \1=Ax (HEAVY VERSION)
  482.     MOVE.L  \1,HEAP
  483.     BSR.L EXPAND5
  484.     ENDM
  485. ;*-*
  486. ;*-*
  487. ;; CREATE GLOBINFO STRUCTURE FOR IDENT
  488. ;; GInfo
  489. GINFO:  MACRO               ; \1=ASCIIPTR.EA, \2=TRASH.AX, \3=IDENTPTR.AX
  490.     TSTMOD
  491.     BEQ.S   .NGINF
  492.     GETM    \2          ; BUILD "GLOBINFO"
  493.     BTST    #1,5(\3)
  494.     BNE.S   .NGINF
  495.     MOVE.L  \2,6(\3)
  496.     MOVE.L  \1,(\2)+
  497.     CLR.L   (\2)+
  498.     DONEM   \2
  499.     BRA.S   .NGOUT
  500. .NGINF: CLR.L   6(\3)
  501. .NGOUT:
  502.     ENDM
  503. ;*-*
  504. ;; ChEStB
  505. CHESTB: MACRO               ; CHeckEStackBuf \1=CURBUF.EA, \2=TR.DX
  506.     SUBQ.W  #1,.BC          ; \3=DIST, \4=ERROR
  507.     BNE.S   .NC
  508.     MOVE.W  #\3,.BC
  509.     MOVE.L  #ESTACKBUF,\2
  510.     ADD.L   #MAXSTACK,\2
  511.     SUB.L   #1000,\2
  512.     CMP.L   \1,\2
  513.     BMI \4
  514.     BRA.S   .NC
  515. .BC:    DC.W    \3
  516. .NC:
  517.     ENDM
  518. ;*-*
  519. ;; INTERN
  520. INTERN: MACRO               ; \1=ERRNUM
  521.     MOVE.W  #\1,GURUNUM
  522.     BRA.L DAMAGEDCOOKIES
  523.     ENDM
  524. ;*-*
  525. ;*-*
  526. ;*-*
  527.  
  528.  
  529.     INCDIR ""
  530.  
  531.     INCLUDE 'PPC.I'
  532.  
  533.     INCLUDE 'PREPROCESSOR.S'
  534.     INCLUDE 'INTERNAL1.S'
  535.     INCLUDE 'PARSE.S'
  536.     INCLUDE 'IDENT.S'
  537.     INCLUDE 'ASSEMBLER.S'
  538.     INCLUDE 'ERROR1.S'
  539.     INCLUDE 'CHKIDENT.S'
  540.     INCLUDE 'IO1.S'
  541.     INCLUDE 'CACHE.S'
  542.     INCLUDE 'INTERNAL2.S'
  543.     INCLUDE 'IO2.S'
  544.     INCLUDE 'INTERNAL3.S'
  545.     INCLUDE 'COMPILER.S'
  546.     INCLUDE 'APPENDLISTS.S'
  547.     INCLUDE 'ADDRESS.S'
  548.     INCLUDE 'EXPRESSIONS.S'
  549.     INCLUDE 'ERROR2.S'
  550.     INCLUDE 'LINKER.S'
  551.     INCLUDE 'FUNCTIONS.S'
  552.     INCLUDE 'DATAS.S'
  553. ;; BBS section
  554.  
  555. ; ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ;
  556. ;   UnInitialized DataSection for E Compiler                    ;
  557. ; ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ;
  558.  
  559.         SECTION EDATA,BSS
  560. FIB:        DS.B    300
  561.         EVEN
  562. NAMEBUF:    DS.B    300
  563.         EVEN
  564. PROCBUF:    DS.B    300
  565.         EVEN
  566. SRCDIRBUF:  DS.B    300
  567.         EVEN
  568. DIRNAME:    DS.B    300
  569.         EVEN
  570. PRINTBUF:   DS.B    300
  571.         EVEN
  572. STCNAME:    DS.B    256
  573.         EVEN
  574. WORKBUF:    DS.B    MAXIDENT+2
  575.         EVEN
  576. ESTACKBUF:  DS.B    MAXSTACK+2
  577.         EVEN
  578. EFUNCBYTE:  DS.B    NREFUNC+10
  579.         EVEN
  580. EFUNCRAISE: DS.B    (NREFUNC+10)*10
  581.         EVEN
  582. LIBRAISE:   DS.B    MAXLIBRAISE*10
  583.         EVEN
  584. BRACKETSBUF:    DS.B    MAXBRACK*4
  585.         EVEN
  586. HASHBUFS:               ; CONTIGUOUS BLOCKS
  587. KEYHASH:    DS.B    1024
  588. ASMHASH:    DS.B    1024
  589. AKWHASH:    DS.B    1024
  590. PPCHASH:    DS.B    1024
  591. CONSTHASH:  DS.B    1024
  592. IDENTHASH:  DS.B    1024
  593. MACROHASH:  DS.B    1024
  594. LIBHASH:    DS.B    1024
  595.             DS.B    -GLOBOFF
  596. PSEUDOA4:
  597. ENDHASHBUFS:
  598. ;*-*
  599. END
  600.  
  601.  
  602.  
  603.